$LOAD_PATH.unshift File.join(File.dirname(__FILE__),'../..','ext_pr1/lib')
require 'ext_pr1_v4'

#Temperatur
#Funktion zur Wiedergabe einer bestimmten Temperatur als true/false
#Bereiche(< 18 => zu_kalt und unangenehm, 18 bis 25 => angenehm, > 25 => zu_warm und unangenehm)
#Int => bool



#Funktion, die sagt, ob eine temperatur zu kalt ist
#zu_kalt? ::= (temp) :: INT => Bool ::
#test ((14) => true, (18) => false, (20) => false
#("10") => Err, (1.1) => Err, (-2.5) Err)

def zu_kalt?(temp)
check_pre(
temp.int?)
  temp < 18
end
#Funktion, die sagt, ob eine temperatur zu warm ist
#zu_warm? ::= (temp) :: Nat => Bool ::
#test((14) => false, (25) => false, (28) => true
#("10") => Err, (1.1) => Err, (-2.5) Err)
def zu_warm?(temp)
check_pre(
temp.int?)
  temp > 25
end
#Funktion, die sagt, ob eine temperatur angenehm ist
#angenehm? ::= (temp) :: INT => Bool ::
#test((14) => false, (18) => true,(25) => true, (28) => false
#("10") => Err, (1.1) => Err, (-2.5) => Err)
def angenehm?(temp)
check_pre(
temp.int?)
  temp >= 18 and temp <= 25
  !((temp < 18) or (temp > 25))
  ((temp >= 18) ? ((temp <= 25) ? true : false) : false)
  ((not zu_kalt?(temp)) and (not zu_warm?(temp)) ? true : false)
end
#Funktion, die sagt, ob eine temperatur unangenehm ist
#unangenehm? ::= (temp) :: INT => Bool ::
#test unangenehm? (14) => true, (18) => false, (20) => false, (25) => false, (28) => true
#("10") => Err, (1.1) => Err, (-2.5) => Err,
def unangenehm?(temp)
check_pre(
temp.int?)
  ((temp < 18 or temp > 25) ? true : false)
end